<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

use App\Org\Image;

use DB;

class goodsController extends Controller
{
    public function index(Request $request)
    {

    	// 保存搜索的条件
    	$where = [];

        // 选择数据库表
    	$db = DB::table('storeGoods');

        // 判断有没有查询商品名
    	if ($request->has('goodsName')) {

            // 模糊查询
    		$db->where('goodsName', 'like', "%{$request->input('goodsName')}%");

            // 查询内容
    		$where['goodsName'] = $request->input('goodsName');

    	}
 
        // 分页
    	$list = $db->paginate(3);
    	
    	return view('admin.goods.goodslist', ['list'=>$list,'where'=>$where]);

    }

    public function create()
    {

        //获取storeSort数据表所有内容
        $data = DB::table('storeSort')->get();

    	return view('admin.goods.goodsadd', ['data'=>$data]);

    }

    public function store(Request $request)
    {

        // 自定义错误信息
        $message = [

            'required' => ':attribute 不能为空',

        ];

        //设定验证规则
        $this->validate($request, [

            'GoodsName' => 'required',

            'GoodsTitle' => 'required',

            'GoodsPic' => 'required',

            'GoodsPrice' => 'required',

            'GoodsStore' => 'required',

            'GoodsPresent' => 'required',

            'GoodsMerchant' => 'required',

            'GoodsDetail' => 'required',

            'GoodsSales' => 'required',

        ], $message);

        // 分隔商品类型
        $path = explode('-', $request['GoodsType']);

        // 获得商品的父Id
        $upid = $path[2];

        // 获得商品的分类父类名
        $checkName = DB::table('storeSort')->where('SortId',$upid)->first();

        // 判断是否上传了图片
        if ($request->hasFile('GoodsPic')) {

            // 获取上传图片内容
            $file = $request->file('GoodsPic');

            // 判断上传图片内容是否可用
            if ($file->isValid()) {

                //获取后缀
                $ext = $file->getClientOriginalExtension();

                // 新建图片名称
                $picname = time().'.'.$ext;

                // 移动图片到uploads文件夹下
                $file->move('./uploads/', $picname);

                // 判断文件上传是否成功
                if ($file->getError()>0) {

                    echo '上传失败';

                }else{

                    // 使用自定义的处理图片类
                    $img = new Image();

                    // 打开图片资源
                    $img->open('./uploads/'.$picname);

                    // 获得显示图片名称
                    $imgshow = 's_'.$picname;

                    // 缩小图片
                    $img->thumb(100,100)->save('./uploads/'.$imgshow);

                    // 出去token字段
                    $data = $request->except('_token');

                    // 获得数据库的显示图片名称
                    $data['GoodsPic'] = $imgshow;

                    // 获得数据库的大图名称
                    $data['GoodsBigPic'] = $picname;

                    // 获得商品品牌
                    $data['GoodsBrand'] = $checkName->SortName;

                    // 将添加的数据插入数据库
                    $id = DB::table('storeGoods')->insertGetId($data);

                    // 判断是否上传成功
                    if ($id > 0) {

                        return redirect('/goods')->with('msg', '添加成功');

                    }

                }

            }

        }

    }

    public function destroy($id)
    {

        //执行删除
        $row = DB::table('storeGoods')->where('GoodsId', $id)->delete();

        // 判断是否删除成功
        if($row > 0){

            return redirect('/goods')->with('msg', '删除成功');

        }

    }

    public function edit($id)
    {

        // 获取数据表storeSort所有的数据
        $data = DB::table('storeSort')->get();

        // 获得数据表storeGoods中的相应数据,用以显示所有的商品类型
        $list = DB::table('storeGoods')->where('GoodsId', $id)->first();

        return view('admin.goods.goodsedit', ['data'=>$data, 'list'=>$list]);

    }

    public function update($id, Request $request)
    {   

        // 自定义错误信息
        $message = [

            'required' => ':attribute 不能为空',

        ];

        //设定验证规则
        $this->validate($request, [

            'GoodsName' => 'required',

            'GoodsTitle' => 'required',

            'GoodsPrice' => 'required',

            'GoodsStore' => 'required',

            'GoodsPresent' => 'required',

            'GoodsMerchant' => 'required',

            'GoodsDetail' => 'required',

            'GoodsSales' => 'required',

        ], $message);

        //分隔商品类型字符串
        $path = explode('-', $request['GoodsType']);

        // 获得商品的父id
        $upid = $path[2];

        // 获得商品的分类父类名
        $checkName = DB::table('storeSort')->where('SortId', $upid)->first();

        // 获得商品的品牌
        $request['GoodsBrand'] = $checkName->SortName;

        // 去除token和method字段名
        $data = $request->except('_token', '_method');

        // 判断是否有图片上传
        if ($request->hasFile('GoodsPic')) {

            // 获取图片内容
            $file = $request->file('GoodsPic');

            // 判断文件是否有效
            if ($file->isValid()) {

                //获取后缀
                $ext = $file->getClientOriginalExtension();

                // 获得文件名
                $picname = time().'.'.$ext;

                // 移动该文件到uploads目录
                $file->move('./uploads/', $picname);

                // 判断是否上传成功
                if ($file->getError() > 0) {

                    echo '上传失败';

                }else{

                    //使用自定义的处理图片类
                    $img = new Image();

                    // 获取资源
                    $img->open('./uploads/'.$picname);

                    // 获得显示图片名
                    $imgshow = 's_'.$picname;

                    // 缩小图片
                    $img->thumb(100,100)->save('./uploads/'.$imgshow);

                    // 设置显示图片名
                    $data['GoodsPic'] = $imgshow;

                    // 设置大图名
                    $data['GoodsBigPic'] = $picname;

                }

            }

        }

        // 执行修改
        $row = DB::table('storeGoods')->where('GoodsId',$id)->update($data);

        // 判断是否修改成功
        if ($row > 0) {

            return redirect('/goods')->with('msg', '修改成功');

        }

    }

}
